// 1.引入
import Vue from "vue"
import axios from "axios"
import qs from "querystring"
import {errorAlert} from "../utils/alert"
import store from "../store"
import router from "../router"

// 2.环境配置
//开发环境
if (process.env.NODE_ENV == "development") {
    Vue.prototype.$pre = "http://localhost:3000"
}
//生产环境
if (process.env.NODE_ENV == "production") {
    Vue.prototype.$pre = ""
}

// 3.请求拦截   3.请求拦截加请求头
axios.interceptors.request.use(config => {
    if(config.url!=="/api/userlogin"){
        config.headers.authorization=store.state.info.token
    }
    return config
})

// 4.响应拦截
axios.interceptors.response.use(res => {
    // 统一打印
    console.group("本次请求地址：" + res.config.url)
    console.log(res);
    console.groupEnd()

    //统一处理失败
    if(res.data.code!==200){
        errorAlert(res.data.msg)
    }

    // 4.响应拦截加掉线处理
    if(res.data.msg=="登录已过期或访问权限受限"){
        //清除vuex和本地存储的数据
        store.dispatch("changeInfo",{})

        //跳转页面
        router.replace("/login")
    }

    return res;
})

//get 
/**
 * get用来发起get请求的
 * url:请求地址
 * params:请求参数 默认是{}
 * 案例：get("/api/login",{phone:"1",password:"12313"}).then()
 */
export const get = (url, params = {}) => {
    return axios({
        url,
        method: "get",
        params
    })
}
/**
 * post用来发起post请求
 * url:请求地址
 * params:请求参数 默认{}
 * isFile:是否有文件 true：有文件，false就是没有文件 默认是false
 * 案例：post("/api/login",{phone:"1"},true).then(res=>{})
*/
export const post=(url,params={},isFile=false)=>{
    let data=null
    if(isFile){
        //有文件
        data=new FormData()
        for(let i in params){
            data.append(i,params[i])
        }
    }else{
        //无文件
        data=qs.stringify(params)
    }
    return axios({
        url,
        method:"post",
        data
    })
}




